// 第一题
// 分别查看下面的输出
// 知识点： 对象的属性是string或者Symbol
var a ={}, b = '123', c = 123;
a[b] = 'b'; // a[b] => a['123'] = 'b'
a[c] = 'c'; // a[c] => a['123'] = 'c'
console.log('片段一：', a[b]); // c


var a ={}, b = Symbol('123'), c = Symbol('123');
a[b] = 'b';
a[c] = 'c'; 
// Symbol('123') !== Symbol('123')
console.log('片段一：', a[b]); // b

var a ={}, b = {key: '123'}, c = {key: 123};
a[b] = 'b';// a[b] => a[b.toString()]=>a['[object Object]'] = 'b
a[c] = 'c'; // a[c] => a[c.toString()]=>a['[object Object]'] = 'c'
console.log('片段一：', a[b]); // c


// 第二题
// 实现旋转数组
// 传入[1, 2, 3, 4, 5, 6]数组和一个旋转的次数k返回旋转后的数据
// 例子：传入[1, 2, 3, 4, 5, 6]和k=3，获得数组[4, 5, 6, 1, 2, 3]

// 方法一：
function roate1(arr, k) {
    var step = k % arr.length;
    var i = 0;
    for(;i < step; i++) {
        let last = arr.pop();
        arr.unshift(last);
    };
    return arr
};
console.log('旋转数组方法一：', roate1([1, 2, 3, 4, 5, 6, 7], 4));

// 方法二：
function roate2(arr, k) {
    let step = k % arr.length;
    return arr.slice(-step).concat(arr.slice(0, arr.length - step));
};
console.log('旋转数组方法二：', roate2([1, 2, 3, 4, 5, 6, 7], 3));

// 方法三：
function roate3(arr, k) { 
    var step = k % arr.length;
    return arr.splice(-step).concat(arr);
 };
 console.log('旋转数组方法三：', roate3([1, 2, 3, 4, 5, 6, 7], 6));